package com.unitd.logistics.comm.utils.encrypt;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加解密工具类
 *
 * @author hudan
 * @version 1.0
 * @filename Md5.java
 * @copyright www.pactera.com
 * @date 2019-01-26
 */
public class Md5 {

	/**
	 * 按照指定的编码格式,将指定字符串进行MD5加密
	 *
	 * @param str     需要加密的内容
	 * @param charset 编码方式
	 * @return 加密后的密文
	 */
	public static String encrypt(String str, String charset) throws NoSuchAlgorithmException, UnsupportedEncodingException {
		StringBuilder sb = new StringBuilder();

		// 获取加密实例对象
		MessageDigest md = MessageDigest.getInstance("MD5");
		md.update(str.getBytes(charset));
		byte[] result = md.digest();
		for (int i = 0; i < result.length; i++) {
			int val = result[i] & 0xff;
			if (val <= 0xf) {
				sb.append("0");
			}
			sb.append(Integer.toHexString(val));
		}
		return sb.toString().toLowerCase();
	}
}